/**
 * Klasse zur einfacheren Handhabung der Außenflächen des Hauses
 * Enthält ein 2D-Array, das die Dimensionen einer Fläche definiert
 * und markiert dessen Position in Bezug auf das gesamte Haus
 */
public class Lebkuchenflaeche {

    private Lebkuchen[][] array;
    private Position position;

    public Lebkuchenflaeche(Lebkuchen[][] array, Position position) {
        this.array = array;
        this.position = position;
    }

    public Lebkuchen[][] getArray() {
        return array;
    }

    public Position getPosition() {
        return position;
    }

    /**
     * Beschreibt die Position einer Flaeche im zu bauenden Haus
     */
    public enum Position {
        BODEN,
        VORDERSEITE,
        RUECKSEITE,
        SEITENWAND1,
        SEITENWAND2,
        DACHSCHRAEGE
    }

    /**
     * Für die Dateiausgabe: iteriert über alle Felder einer Lebkuchenflaeche
     * und verwendet das Glasursymbol der Bausteine, um die Flaeche grafisch darzustellen
     * @return Glasurmuster einer Lebkuchenflaeche als String
     */
    public String flaecheZeichnen() {
        StringBuilder builder = new StringBuilder();
        
        // Wir starten mit dem größten Index, um die Fläche von oben nach unten zu zeichnen
        for (int i = array.length - 1; i >= 0; i--) {
            for (Lebkuchen l : array[i]) {

                // Dieser Check sollte nicht nötig sein, verhindert aber Exceptions während der Entwicklung
                if (l != null) {
                    builder.append(l.getGlasur().toString());
                }
            }
            builder.append(System.lineSeparator());
        }

        return builder.toString();
    }

}
